package com.cskaoyan.javase.oop1._13block._2building;
/**
 * 一些使用构造代码块需要注意的地方：
 * 建议应该将构造代码块，放在成员变量的声明和显式赋值语句的下面
 * 一方面，如果构造代码块赋值在上，成员变量声明在下，逻辑上会很奇怪
 * 另一方面，如果对象中成员变量的赋值，依赖于构造代码块和显式赋值的代码书写顺序，容易引发错误
 *
 * 因为构造代码块最终会加入构造器，所以构造代码块当中也可以使用this关键字，表示当前对象
 * 但是实际使用价值和意义不大，仅作了解。
 *
 * @since 10:35
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo3 {
    public static void main(String[] args) {
        Teacher t = new Teacher(18);
    }
}
class Teacher{

    int age = 10;
    {
        System.out.println(this);
        age = 18;
    }

    public Teacher(int age) {
        System.out.println(this);
        this.age = age;
    }
}
